package com.foreknow.demo3;

import java.util.Scanner;

/**
 * 根据需求
 * 1. 找到要写的方法，每个方法就是一个功能
 * 登录、查询余额、存款、取款、修改密码、退出
 *
 * 2. 定义一个测试方法来调用以上定义的方法
 *
 * 3. 用户需要先登录，如果登录成功才能存取款以及其它的操作
 *
 * 4. 需要用到的基本语法
 *      Scanner  switch  循环  判断
 *
 * 5. 初始化变量： 用户名  密码   余额
 */
public class ExampleDemo {


    /**
     * 查询余额
     *
     */



    /**
     * 取款
     *
     */

    /**
     * 修改密码
     *
     */

    /**
     * 退出
     *
     */


    /**
     * 欢迎界面
     *
     */
    public static void welcome() {
        System.out.println("********************");
        System.out.println("********欢迎信息********");
        System.out.println("********************");
    }

    /**
     * 登录
     * 需求：
     * 用户要输入用户名和密码，需要判断输入的用户名和密码是否与user和pwd相同
     * 如果相同登录成功
     * 如果不同用户有三次机会
     */
    public static boolean login(String user,String pwd) {
        Scanner input = new Scanner(System.in);
        for(int i = 3;i>0;i--) {
            System.out.println("请输入用户名: ");
            String new_user = input.next();
            System.out.println("请输入密码: ");
            String new_pwd = input.next();
            if (user.equals(new_user) && pwd.equals(new_pwd)) {
                System.out.println("登录成功......");
                return true;
            }else {
                if(i - 1 == 0) {
                    System.out.println("密码输入错误3次,吞卡");
                    //退出系统
                    System.exit(0);
                }
                System.out.println("用户名或密码输入错误，您还有" + (i - 1) +"次机会！！！");
            }
        }
        return false;
    }

    /**
     * 查询余额
     *
     */
    public static void checkMoney(double money) {
        System.out.println("您的余额为: " + money);
    }

    /**
     * 判断是否继续(y/n)
     */
    public static void decide() {
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续(y/n)");
        String dec = input.next();
        if(dec.equals("y")) {
            return; //表示方法结束了
        }else if(dec.equals("n")) {
            System.out.println("系统退出了!!!");
            System.exit(0);
        }else {
            while (true) {
                System.out.println("输入错误，请重新输入(y/n)");
                String temp = input.next();
                if(temp.equals("y")) {
                    return; //表示方法结束了
                }else if(temp.equals("n")) {
                    System.out.println("系统退出了!!!");
                    System.exit(0);
                }
            }
        }
    }

    /**
     * 存款
     * 1. 输入存款的金额
     * 2. 条件判断
     */
    public static double setMoney(double money) {
        double mone1y = 1000;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入存款的金额: ");
        double addMoney = input.nextDouble();
        if(addMoney > 10000) {
            return 0;
        } else if(addMoney < 0) {
            System.out.println("存款金额错误!!!");
            return 0;
        } else if(addMoney % 100 != 0) {
            System.out.println("请输入100的整数倍存款!!!");
            return 0;
        }else {
            System.out.println("存款成功，当前的余额为" + (money + addMoney));
            return  addMoney;
        }
    }

    public static void main(String[] args) {
        String user = "admin"; //用户名
        String pwd = "123"; //密码
        double money = 10000; //余额
        Scanner input = new Scanner(System.in);
        //调用welcome方法
        ExampleDemo.welcome();
        //登录
        boolean isRight = ExampleDemo.login(user,pwd);
        while (isRight) {
            System.out.println("1.查询余额  2.存款  3.取款  4.修改密码  5.退出");
            int choice = input.nextInt();
            switch (choice) {
                case 1:
                    //查询余额
                    ExampleDemo.checkMoney(money);
                    //是否继续
                    ExampleDemo.decide();
                    break;
                case 2:
                    //存款
                    money += ExampleDemo.setMoney(money); // money = money + setMoney(money)
                    //是否继续
                    ExampleDemo.decide();
                    break;
                case 3:
                    //取款
                    break;
                case 4:
                    //修改密码
                    break;
                case 5:
                    //退出
                    break;
            }
        }
    }
}
